Optimisez les performances des View Transitions CSS. Ce guide explore le traitement des classes d'animation, les stratégies d'optimisation et les meilleures pratiques pour des expériences web fluides et efficaces à l'échelle mondiale.
Maîtriser la performance des classes de View Transitions CSS : une analyse approfondie du traitement des animations
Le web moderne repose sur des expériences utilisateur fluides, et les transitions visuelles dynamiques sont la pierre angulaire de cette attente. Des fondus subtils aux réarrangements élaborés d'éléments, des changements fluides dans l'interface utilisateur (UI) améliorent l'engagement et donnent aux applications une sensation de plus grande réactivité. Les View Transitions CSS, un ajout révolutionnaire à la plateforme web, promettent de démocratiser ces transitions complexes, permettant aux développeurs de créer des animations déclaratives époustouflantes avec une relative facilité.
Cependant, la puissance des View Transitions, particulièrement lorsqu'elle est associée à des classes d'animation personnalisées, s'accompagne de considérations de performance. Pour un public mondial accédant au web sur des appareils et des conditions de réseau variés, comprendre comment ces classes d'animation sont traitées par le navigateur n'est pas seulement bénéfique ; c'est essentiel. Ce guide complet vous emmènera dans une analyse approfondie des aspects de performance des View Transitions CSS, avec un accent particulier sur les mécanismes complexes du traitement des classes d'animation, offrant des perspectives et des meilleures pratiques pour garantir que vos transitions ne soient pas seulement belles, mais aussi performantes et accessibles dans le monde entier.
Comprendre les bases : que sont les View Transitions CSS ?
Avant de décortiquer la performance, rappelons brièvement ce que les View Transitions CSS offrent. Traditionnellement, l'animation des changements entre différents états du Document Object Model (DOM) (par exemple, la navigation entre les pages, le masquage/l'affichage d'éléments, ou la mise à jour de contenu) nécessitait un JavaScript complexe, impliquant souvent la gestion de plusieurs éléments, le calcul de positions et l'orchestration d'animations à travers différents composants. Cela pouvait entraîner des flashs de contenu non stylé, des décalages de mise en page et une charge de maintenance importante pour les développeurs.
Les View Transitions CSS simplifient cela en fournissant une manière déclarative d'animer ces changements du DOM. L'idée centrale est que le navigateur prend un instantané de l'ancien état du DOM, effectue la mise à jour réelle du DOM, prend un instantané du nouvel état du DOM, puis anime la transition entre ces deux instantanés. Ce processus se déroule en grande partie hors du thread principal lorsque c'est possible, minimisant ainsi les saccades (jank) et offrant une expérience utilisateur plus fluide.
Le mécanisme de base : comment fonctionnent les View Transitions
La magie commence avec la méthode document.startViewTransition(). Lorsqu'elle est appelée, le navigateur :
- Prend une capture d'écran de l'état actuel de la page.
- Exécute la fonction de mise à jour du DOM que vous fournissez (par exemple, changer le contenu, naviguer vers une nouvelle URL, basculer des classes CSS).
- Prend une autre capture d'écran du nouvel état de la page.
- Crée un arbre de pseudo-éléments (
::view-transition) qui contient les anciens et nouveaux instantanés et anime la transition entre eux.
La clé pour personnaliser ces animations est la propriété CSS view-transition-name. En attribuant un view-transition-name unique à un élément dans son ancien et son nouvel état, vous indiquez au navigateur de traiter cet élément comme une entité continue à travers la transition. Cela permet des animations fluides et spécifiques à un élément, comme une image de produit qui s'agrandit en douceur d'une vue en liste à une page de détail.
Le rôle des classes d'animation dans les View Transitions
Bien que les View Transitions fournissent des animations par défaut judicieuses (comme les fondus enchaînés), leur véritable puissance réside dans la personnalisation. C'est là que les classes d'animation CSS entrent en jeu. En appliquant des classes spécifiques aux éléments au sein de la transition, les développeurs peuvent définir des animations personnalisées sophistiquées en utilisant les règles CSS @keyframes standard.
Considérez un scénario où vous souhaitez qu'un élément spécifique glisse depuis la gauche pendant une transition, plutôt qu'un simple fondu. Vous pourriez définir une classe slide-in-left avec une règle @keyframes associée. Pendant la view transition, vous vous assureriez que cette classe est appliquée à l'élément pertinent dans le 'nouvel' état, ou aux pseudo-éléments de la view transition eux-mêmes.
Appliquer des classes aux pseudo-éléments de View Transition
Les View Transitions exposent plusieurs pseudo-éléments qui représentent les différentes parties de la transition. Ce sont les cibles principales pour les classes d'animation :
::view-transition: Le pseudo-élément racine, couvrant toute la fenêtre d'affichage.::view-transition-group(name): Représente un groupe d'éléments avec unview-transition-namespécifique.::view-transition-image-pair(name): Contient les instantanés 'ancien' et 'nouveau' pour un élément nommé.::view-transition-old(name): L'instantané de l'élément avant la mise à jour du DOM.::view-transition-new(name): L'instantané de l'élément après la mise à jour du DOM.
En ciblant ces pseudo-éléments avec des classes, les développeurs peuvent contrôler précisément l'animation. Par exemple :
.my-transition::view-transition-old(hero) {
animation: fade-out 0.3s ease-out forwards;
}
.my-transition::view-transition-new(hero) {
animation: slide-in 0.3s ease-in forwards;
}
Dans cet exemple, .my-transition est une classe appliquée à l'élément html ou body pendant la transition pour activer ces règles d'animation spécifiques. Le navigateur traite ces classes et leurs @keyframes associés pour exécuter l'effet visuel désiré.
Implications de performance des classes d'animation
Chaque animation, en particulier celles pilotées par des classes CSS, implique le moteur de rendu du navigateur. Comprendre comment le navigateur traite ces animations est crucial pour optimiser la performance. Le pipeline de rendu implique généralement plusieurs étapes : Style, Layout (Mise en page), Paint (Peinture) et Composite. Différentes propriétés CSS affectent différentes étapes, et le coût de performance varie considérablement.
Le pipeline de rendu du navigateur et les classes d'animation
- Style : Le navigateur calcule les styles finaux pour tous les éléments visibles. Lorsqu'une classe d'animation est ajoutée ou supprimée, ou lorsqu'une animation démarre/s'arrête, le navigateur doit réévaluer les styles.
- Layout (Reflow) : Si une propriété CSS affecte la géométrie d'un élément (par exemple,
width,height,left,top,padding,margin), le navigateur doit recalculer la taille et la position de cet élément et potentiellement de tous ses enfants et frères et sœurs. C'est souvent l'étape la plus coûteuse. - Paint (Repaint) : Si une propriété CSS affecte l'apparence visuelle d'un élément mais pas sa géométrie (par exemple,
color,background-color,box-shadow), le navigateur redessine les pixels de cet élément. C'est moins coûteux que le layout mais peut quand même être onéreux pour des éléments complexes ou de grandes surfaces. - Composite : Le navigateur dessine les éléments sur l'écran, souvent en utilisant l'accélération matérielle. Des propriétés comme
transformetopacitysont idéales pour l'animation car elles ne déclenchent généralement que cette étape, ce qui les rend très performantes.
Lorsque vous appliquez une classe d'animation à un pseudo-élément de view transition ou à un élément DOM standard pendant une transition, le navigateur traite ses @keyframes associés. Les propriétés définies dans ces @keyframes dictent quelles étapes du pipeline de rendu sont affectées et, par conséquent, le coût de performance.
Propriétés d'animation à coût élevé vs. à coût faible
- Coût élevé : Animer des propriétés qui déclenchent le Layout (par exemple,
width,height,padding,margin,border,top,left) ou un Paint extensif (par exemple,box-shadowavec des valeurs de flou complexes,filtersur de grandes zones) aura un impact significatif sur la performance. C'est parce que ces changements forcent souvent le navigateur à recalculer et à redessiner de grandes parties de la page. - Coût faible : Animer des propriétés qui peuvent être gérées par le Compositor est idéal. Celles-ci incluent
transform(pour la position, l'échelle, la rotation) etopacity. Les navigateurs peuvent souvent déléguer ces animations au GPU, les rendant incroyablement fluides, même sur des appareils moins puissants.
Lors de la définition de classes d'animation pour les View Transitions, un piège courant est d'utiliser des propriétés qui déclenchent des opérations de layout ou de paint coûteuses. Bien que les View Transitions abstraient certaines complexités, les principes de performance sous-jacents des animations CSS s'appliquent toujours. Animer la width d'un pseudo-élément de 0 à 100% peut toujours provoquer un reflow, même dans le contexte optimisé des View Transitions, si ce n'est pas géré avec soin (par exemple, en s'assurant que l'élément animé est isolé ou promu sur sa propre couche de composition).
Analyse approfondie du traitement des classes d'animation dans les View Transitions
Décortiquons les défis et considérations spécifiques lorsque les classes d'animation sont traitées au sein du cycle de vie des View Transitions.
1. Recalcul des styles initial
Lorsque document.startViewTransition() est appelé et que votre fonction de mise à jour du DOM s'exécute, tout changement de classes d'éléments ou de styles en ligne déclenchera un recalcul des styles. C'est une étape fondamentale. Si vos classes d'animation sont appliquées pendant cette mise à jour du DOM, leurs styles de base feront partie de ce recalcul initial. Cette phase est généralement rapide mais peut devenir un goulot d'étranglement avec des sélecteurs CSS excessivement complexes, un arbre DOM très profond, ou un grand nombre de changements de style.
2. Création des pseudo-éléments et application des styles
Après la mise à jour du DOM et les instantanés initiaux, le navigateur construit l'arbre de pseudo-éléments ::view-transition. Il applique ensuite toutes les règles CSS spécifiques ciblant ces pseudo-éléments, y compris celles définies via des classes d'animation. Par exemple, si vous avez une classe .slide-in qui définit une animation de transform, et que vous l'appliquez à ::view-transition-new(my-element), le navigateur doit analyser cette règle et préparer l'animation.
3. Démarrage de l'animation et production des images
Une fois que les pseudo-éléments sont stylés et que les animations sont définies, le navigateur commence à exécuter les règles @keyframes associées à vos classes d'animation. Pour chaque image de l'animation :
- Mise à jour du style : Le navigateur calcule les valeurs interpolées pour les propriétés animées (par exemple, la valeur de
transformà 10% de l'animation). - Layout/Paint (si applicable) : Si les propriétés animées affectent le layout ou le paint, ces étapes sont déclenchées. C'est là que les problèmes de performance surviennent souvent. Par exemple, animer
widthouheightpeut causer des recalculs de layout répétés à chaque image, menant à des saccades. - Composite : Les éléments mis à jour sont composés sur l'écran. Idéalement, les animations devraient principalement toucher cette étape.
Le défi principal est de garder ce processus aussi efficace que possible, en particulier sur les appareils avec des ressources CPU/GPU limitées, qui sont courants dans de nombreuses parties du monde. Une classe d'animation complexe qui déclenche fréquemment le layout ou le paint entraînera des pertes d'images, aboutissant à une expérience saccadée et non professionnelle.
4. Le rôle de view-transition-name et de la superposition (Layering)
Lorsque vous utilisez view-transition-name, le navigateur promeut souvent l'élément nommé sur sa propre couche de composition. C'est une optimisation de performance : les éléments sur leurs propres couches peuvent être déplacés, mis à l'échelle ou estompés sans affecter d'autres parties de la page, tant que seules les propriétés transform et opacity sont animées. Cela permet au navigateur de déléguer ces opérations au GPU, améliorant considérablement la performance.
Cependant, promouvoir trop d'éléments sur leurs propres couches peut aussi avoir un coût, en consommant de la mémoire GPU. Bien que les navigateurs soient intelligents à ce sujet, c'est quelque chose à garder à l'esprit. Le principal avantage de view-transition-name est qu'il facilite l'animation d'un élément en utilisant des propriétés efficaces, uniquement liées au compositeur, à travers un changement du DOM.
Goulots d'étranglement de performance courants avec les classes d'animation dans les View Transitions
- Animer des propriétés de Layout/Paint : Comme discuté, utiliser des propriétés comme
width,height,margin,top,left, ou desbox-shadowsetfilterscomplexes dans les classes d'animation peut forcer le navigateur à des cycles de layout et de paint coûteux à chaque image. keyframestrop complexes : Des animations avec de nombreuses images clés, des fonctions d'accélération complexes, ou un grand nombre de propriétés animées peuvent augmenter la charge de travail du navigateur pour le calcul des styles et l'interpolation.- Éléments animés grands ou nombreux : Animer de nombreux éléments simultanément, surtout les grands, peut mettre à rude épreuve la performance, même si seules des propriétés gérées par le compositeur sont utilisées. Chaque élément animé nécessite des ressources.
- Sélecteurs CSS inefficaces : Si vos classes d'animation font partie de sélecteurs CSS complexes, le navigateur pourrait passer plus de temps à déterminer quels styles s'appliquent, impactant potentiellement la phase initiale de recalcul des styles.
- Lectures de layout synchrones en JavaScript : Bien que les View Transitions visent à atténuer cela, si votre fonction de mise à jour du DOM (à l'intérieur de
document.startViewTransition()) implique la lecture de propriétés de layout (par exemple,element.offsetWidth) immédiatement après avoir effectué des écritures qui modifient le layout, cela peut forcer des reflows synchrones, annulant certains des avantages de performance.
Meilleures pratiques pour optimiser la performance des classes d'animation
Obtenir des View Transitions fluides, en particulier avec des classes d'animation personnalisées, nécessite une approche consciente du CSS et du rendu du navigateur. Voici des stratégies concrètes pour le développement web mondial :
1. Prioriser les propriétés accélérées matériellement
C'est la règle d'or pour les animations web. Préférez toujours animer transform (pour la position, l'échelle, la rotation) et opacity. Ces propriétés peuvent être en grande partie déléguées au GPU, contournant les étapes de layout et de paint du pipeline de rendu. Par exemple, au lieu d'animer left et top pour déplacer un élément, utilisez transform: translateX() translateY().
/* Moins performant */
@keyframes slide-unoptimized {
from { top: 0; left: 0; }
to { top: 100px; left: 100px; }
}
/* Plus performant */
@keyframes slide-optimized {
from { transform: translate(0, 0); }
to { transform: translate(100px, 100px); }
}
.my-element-animation {
animation: slide-optimized 0.5s ease-out forwards;
}
2. Limiter la portée des animations
N'animez que ce qui est absolument nécessaire. Évitez d'animer des propriétés sur de grands conteneurs parents complexes si seul un petit élément enfant doit changer. Plus la zone que le navigateur doit mettre à jour est petite, meilleure est la performance. Utilisez view-transition-name judicieusement pour isoler les éléments pour l'animation.
3. Utiliser will-change (avec parcimonie)
La propriété CSS will-change est un indice pour le navigateur qu'une propriété d'un élément va changer. Cela permet au navigateur de faire des optimisations à l'avance, comme promouvoir l'élément sur sa propre couche. Cependant, utilisez will-change avec parcimonie et retirez-le lorsque l'animation est terminée. Une surutilisation peut entraîner une consommation de mémoire accrue et potentiellement aggraver les performances si les optimisations du navigateur ne sont pas nécessaires ou sont mal appliquées.
.my-element-animation {
will-change: transform, opacity; /* Indice pour les optimisations du navigateur */
animation: slide-optimized 0.5s ease-out forwards;
}
4. Simplifier les keyframes et les fonctions d'accélération
Évitez les keyframes trop complexes avec de nombreuses étapes intermédiaires ou des fonctions d'accélération cubic-bezier très personnalisées si des alternatives plus simples permettent d'obtenir un effet visuel similaire. Bien que les navigateurs modernes soient très optimisés, des animations plus simples nécessitent moins de calcul par image.
5. Confinement CSS pour les mises à jour isolées
La propriété CSS contain peut être une optimisation puissante pour les composants isolés. Des propriétés comme contain: layout ou contain: paint indiquent au navigateur que la mise en page interne ou la peinture d'un élément n'affecte pas, et n'est pas affectée par, les éléments en dehors de sa boîte englobante. Cela peut réduire considérablement la portée des recalculs pendant les animations au sein de tels composants.
.isolated-component {
contain: layout paint; /* Optimise le rendu pour ce composant */
}
6. Utiliser le "debounce" et le "throttle" pour les déclencheurs d'animation
Si vos View Transitions sont déclenchées par des interactions utilisateur fréquentes (par exemple, des survols rapides, des redimensionnements), utilisez le "debounce" ou le "throttle" sur les écouteurs d'événements pour empêcher un nombre excessif de transitions de démarrer en succession rapide. Cela garantit que le navigateur ne réinitialise pas et n'exécute pas constamment des transitions, conduisant à une expérience globale plus fluide.
7. Accessibilité : respecter prefers-reduced-motion
Crucial pour l'accessibilité mondiale, en particulier pour les utilisateurs souffrant de troubles vestibulaires. Respectez toujours la media query prefers-reduced-motion. Fournissez une expérience plus simple et moins animée pour ces utilisateurs. Les View Transitions s'intègrent bien avec cela, car vous pouvez appliquer conditionnellement des classes d'animation en fonction de cette préférence.
@media (prefers-reduced-motion) {
.my-transition::view-transition-old(hero),
.my-transition::view-transition-new(hero) {
animation: none !important; /* Désactive les animations complexes */
}
}
8. Profilage et débogage avec les outils de développement du navigateur
Le moyen le plus efficace d'identifier les goulots d'étranglement de performance est d'utiliser les outils de développement du navigateur. Des outils comme Chrome DevTools (onglet Performance, onglet Rendering, onglet Animation) sont inestimables :
- Onglet Performance : Enregistrez un profil pendant une transition. Recherchez les images longues, les grands pics de layout ou de paint, et évaluez le taux de rafraîchissement. Identifiez quels éléments causent des reflows/repaints.
- Onglet Layers : Voyez quels éléments ont été promus sur leurs propres couches de composition. Cela aide à comprendre si
view-transition-nameouwill-changeont l'effet désiré. - Onglet Rendering : Activez “Paint Flashing” et “Layout Shift Regions” pour identifier visuellement les zones de la page qui sont repeintes ou subissent un reflow pendant l'animation.
- Onglet Animation : Inspectez et rejouez les animations CSS, en ajustant la vitesse et les fonctions de synchronisation pour peaufiner.
Cette approche pratique permet aux développeurs de cerner exactement où les classes d'animation causent des problèmes de performance et d'appliquer des optimisations ciblées.
Exemples pratiques et cas d'usage mondiaux
Voyons comment des View Transitions optimisées avec des classes d'animation peuvent améliorer l'expérience utilisateur à travers divers types d'applications mondiales :
1. Transition de galerie de produits e-commerce
Imaginez un site e-commerce international où les utilisateurs parcourent des listes de produits. Cliquer sur une image de produit devrait effectuer une transition fluide vers la page de détail du produit. Au lieu d'une coupure nette ou d'un simple fondu, une View Transition peut donner l'impression que l'image du produit 's'agrandit' pour devenir sa vue de détail plus grande, tandis que d'autres éléments glissent en place. Ceci est réalisable en donnant à l'image du produit un view-transition-name et en appliquant des classes d'animation pour contrôler le glissement du texte ou d'autres éléments de l'interface utilisateur.
Focus sur l'optimisation : Assurez-vous que la transition de l'image utilise transform: scale(), et que tout texte qui glisse utilise transform: translateX()/Y(). Évitez d'animer directement width/height sur l'image si possible, ou assurez-vous que c'est géré par la capture d'instantané et la mise à l'échelle du navigateur.
2. Réorganisation des widgets d'un tableau de bord
Pour un tableau de bord de business intelligence mondial, les utilisateurs pourraient glisser-déposer des widgets pour les réorganiser ou développer/réduire des sections. Les View Transitions peuvent animer ces réarrangements de manière transparente. Lorsqu'un utilisateur déplace un widget, son view-transition-name le maintient visuellement persistant, tandis que d'autres widgets peuvent glisser subtilement vers leurs nouvelles positions en utilisant des classes d'animation qui appliquent un transform pour le mouvement.
Focus sur l'optimisation : Priorisez transform pour tous les mouvements. Si les widgets ont un rendu interne complexe, envisagez d'utiliser contain: layout sur eux pour empêcher leurs changements internes de déclencher des reflows plus larges.
3. Formulaires multi-étapes ou parcours d'intégration
De nombreuses applications, des banques aux plateformes de médias sociaux, utilisent des formulaires en plusieurs étapes ou des parcours d'intégration. Une View Transition peut rendre le passage entre les étapes fluide et connecté, plutôt que brusque. Par exemple, un champ de saisie pourrait gracieusement glisser hors de l'écran tandis qu'un nouveau glisse à sa place. C'est parfait pour les utilisateurs du monde entier qui pourraient être nouveaux aux modèles UI/UX spécifiques d'une application.
Focus sur l'optimisation : Gardez les éléments animés au minimum. Utilisez transform pour les effets de glissement. Si le contenu de chaque étape est très différent, assurez-vous que la mise à jour du DOM est efficace.
4. Menus de navigation adaptatifs
Sur les appareils mobiles, les menus de navigation glissent souvent depuis le côté. Les View Transitions peuvent améliorer cela, en particulier si le contenu du menu change légèrement ou si le contenu de la page en dessous nécessite un décalage subtil. Appliquer des classes d'animation au conteneur du menu et potentiellement à la zone de contenu principal pour un effet translateX peut créer une expérience soignée.
Focus sur l'optimisation : L'ensemble du glissement du menu devrait utiliser transform: translateX(). Si le contenu de la page est 'poussé' ou 'superposé', assurez-vous que cet effet est également optimisé pour les changements de transform ou d'opacity, en tirant parti des capacités de superposition des View Transitions.
Outils et techniques pour une analyse plus approfondie
Au-delà des outils de développement intégrés au navigateur, plusieurs outils et techniques externes peuvent aider davantage à l'analyse des performances :
- Audits Lighthouse : Intégrez Lighthouse dans votre flux de développement. Il fournit des audits automatisés sur la performance, l'accessibilité, le SEO et les meilleures pratiques. Bien qu'il ne soit pas directement axé sur les View Transitions, il détectera les problèmes généraux de performance des animations.
- Web Vitals : Surveillez les Core Web Vitals (LCP, FID, CLS) sur le terrain. Des animations fluides contribuent à de meilleures métriques d'expérience utilisateur, réduisant le Cumulative Layout Shift (CLS) si elles sont bien gérées.
- Surveillance de performance personnalisée : Pour des scénarios très spécifiques, vous pouvez utiliser
requestAnimationFramede JavaScript pour suivre les taux de rafraîchissement réels pendant une animation. Cela offre un contrôle granulaire et peut aider à identifier des micro-saccades qui pourraient ne pas être évidentes dans des outils de profilage plus larges. - Tests avec des navigateurs sans tête : Utilisez des outils comme Puppeteer ou Playwright pour automatiser les tests de performance. Vous pouvez scripter la navigation et les transitions, puis capturer des métriques de performance pour garantir une performance constante à travers les builds et les environnements.
L'avenir des View Transitions et de la performance
Les View Transitions CSS sont encore en évolution. Les fournisseurs de navigateurs travaillent continuellement à l'optimisation des mécanismes sous-jacents, à l'amélioration de leur efficacité et à l'expansion de leurs capacités. À mesure que la spécification mûrit, nous pouvons nous attendre à :
- Une capture d'instantané et un rendu encore plus efficaces.
- Potentiellement de nouvelles propriétés CSS ou de nouveaux pseudo-éléments offrant un contrôle plus fin sur le comportement des transitions et des indices de performance.
- Une meilleure intégration avec d'autres API et frameworks web, facilitant la mise en œuvre de modèles de transition complexes.
Les retours de la communauté des développeurs et l'utilisation en conditions réelles joueront un rôle crucial dans la forme de ces développements futurs. En comprenant les caractéristiques de performance actuelles et en appliquant les meilleures pratiques, les développeurs peuvent contribuer à un web plus performant et visuellement plus riche pour tous.
Conclusion : créer des expériences utilisateur mondiales performantes et engageantes
Les View Transitions CSS représentent un bond en avant significatif pour l'animation web, simplifiant ce qui était autrefois une entreprise complexe. Cependant, leur véritable potentiel n'est libéré que lorsque les développeurs les abordent avec une compréhension approfondie de la performance. Le traitement des classes d'animation, en particulier, nécessite une considération attentive du pipeline de rendu du navigateur, en favorisant les propriétés accélérées matériellement, en utilisant judicieusement view-transition-name, et en profilant rigoureusement avec les outils de développement.
Pour un public mondial, la performance n'est pas un luxe ; c'est une nécessité. Une animation lente ou saccadée peut être une barrière frustrante, en particulier pour les utilisateurs sur des appareils moins puissants ou avec une bande passante réseau limitée. En adhérant aux stratégies d'optimisation décrites dans ce guide, les développeurs peuvent créer des View Transitions qui sont non seulement visuellement engageantes mais aussi très performantes, accessibles et inclusives, offrant une expérience constamment fluide et professionnelle aux quatre coins du monde.
Adoptez la puissance des View Transitions, mais donnez toujours la priorité à la performance. Vos utilisateurs, où qu'ils soient, vous en remercieront.